// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
// import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
#pragma once
#include "MySqlStatementImpl.h"

class MySqlMigrateStatement : virtual public MySqlStatementImpl
{
public:
  SQLName_ptr schema;
  SQLCharExpr_ptr shardNames;
  SQLIntegerExpr_ptr migrateType;
  SQLCharExpr_ptr fromInsId;
  SQLCharExpr_ptr fromInsIp;
  SQLIntegerExpr_ptr fromInsPort;
  SQLCharExpr_ptr fromInsStatus;
  SQLCharExpr_ptr toInsId;
  SQLCharExpr_ptr toInsIp;
  SQLIntegerExpr_ptr toInsPort;
  SQLCharExpr_ptr toInsStatus;

  SHAREDOBJECT(MySqlMigrateStatement);
  // @Override
  void accept0(MySqlASTVisitor_ptr visitor);

  SQLName_ptr getSchema();

  void setSchema(SQLName_ptr schema);

  SQLCharExpr_ptr getShardNames();

  void setShardNames(SQLCharExpr_ptr shardNames);

  SQLIntegerExpr_ptr getMigrateType();

  void setMigrateType(SQLIntegerExpr_ptr migrateType);

  SQLCharExpr_ptr getFromInsId();

  void setFromInsId(SQLCharExpr_ptr fromInsId);

  SQLCharExpr_ptr getFromInsIp();

  void setFromInsIp(SQLCharExpr_ptr fromInsIp);

  SQLIntegerExpr_ptr getFromInsPort();

  void setFromInsPort(SQLIntegerExpr_ptr fromInsPort);

  SQLCharExpr_ptr getFromInsStatus();

  void setFromInsStatus(SQLCharExpr_ptr fromInsStatus);

  SQLCharExpr_ptr getToInsId();

  void setToInsId(SQLCharExpr_ptr toInsId);

  SQLCharExpr_ptr getToInsIp();

  void setToInsIp(SQLCharExpr_ptr toInsIp);

  SQLIntegerExpr_ptr getToInsPort();

  void setToInsPort(SQLIntegerExpr_ptr toInsPort);

  SQLCharExpr_ptr getToInsStatus();

  void setToInsStatus(SQLCharExpr_ptr toInsStatus);
};
